iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
自我挑戰組

c++競程30天系列 第 1

Day 01 Uva100 The 3n + 1 problem

  • 分享至 

  • xImage
  •  

#H1 Uva100 The 3n + 1 problem

  • 題義
    此題主要是給入兩個數,由兩數之間找一個3n+1循環最長的數字,3n+1循環就是,當數字為奇數的時候,這個數字3倍然後+1,相反的是偶數的話這個數字直接除餘2,最終求出循環最長的數字。
  • 解法
    1.從最小的數字開始跑到最大的回圈
    2.每個數字都進行一次3n+1循環直到1為止
    3.紀錄每次循環到1停止時總共幾次跟之前最大值做比較
  • c++ code
#include <bits/stdc++.h>
using namespace std;

int main() {
    int x,y,start,end;
    while(cin>>x>>y){
        start=x;
        end=y;
        if(start>end){
            int temp=end;
            end=start;
            start=temp;
        }
        int ans=0;
        for(int i=start;i<=end;i++){
            int index=i,count=0;
            while(index!=1){
                if(index%2){
                    index*=3;
                    index+=1;
                }else{
                    index/=2;
                }
                count++;
            }
            ans=max(ans,count);
        }
        cout<<x<<" "<<y<<" "<<++ans<<endl;
    }
}

下一篇
Day 2 Uva118 - Mutant Flatworld Explorers
系列文
c++競程30天9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言